package com.endes.android.model.dao;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.endes.android.entidades.SSEC06;
import com.endes.android.model.database.EndesOpenHelper;

public class QSSec6Dao {
	private EndesOpenHelper endesOpenHelper;
	private SQLiteDatabase db;
	private Cursor cursor = null;
	private Context context;

	public QSSec6Dao(Context context) {
		this.context = context;
		endesOpenHelper = new EndesOpenHelper(context);

	}

	public SSEC06 ObtenerSeccion6(int qsCluster, int qsNumber, int qsHome,
			int numeroOrdenPersonaSeleccionada) {
		SSEC06 ssec06 = null;
		db = endesOpenHelper.getReadableDatabase();
		cursor = db
				.rawQuery(
						"Select * from SSEC06 where qsCluster=? and qsNumber=? and qsHome=? and qs20C=?",
						new String[] { qsCluster + "", qsNumber + "",
								qsHome + "",
								numeroOrdenPersonaSeleccionada + "" });
		if (cursor.moveToFirst()) {
			ssec06 = new SSEC06();
			ssec06.setQsCluster(qsCluster);
			ssec06.setQsNumber(qsNumber);
			ssec06.setQsHome(qsHome);
			ssec06.setQs20C(numeroOrdenPersonaSeleccionada);
			ssec06.setQs601A(cursor.getInt(cursor.getColumnIndex("qs601A")));
			ssec06.setQs601B(cursor.getInt(cursor.getColumnIndex("qs601B")));
			ssec06.setQs603(cursor.getInt(cursor.getColumnIndex("qs603")));
			ssec06.setQs604(cursor.getInt(cursor.getColumnIndex("qs604")));
			ssec06.setQs606(cursor.getInt(cursor.getColumnIndex("qs606")));
			ssec06.setQs607(cursor.getInt(cursor.getColumnIndex("qs607")));
			ssec06.setQs608(cursor.getInt(cursor.getColumnIndex("qs608")));
			ssec06.setQs609(cursor.getInt(cursor.getColumnIndex("qs609")));
			ssec06.setQs610(cursor.getInt(cursor.getColumnIndex("qs610")));
			ssec06.setQs611(cursor.getInt(cursor.getColumnIndex("qs611")));
		}
		Cerrar();
		return ssec06;
	}

	public void guardarSec6Encuesta(SSEC06 ssec06) {
		ContentValues contenido = new ContentValues();
		if(verificarSexoPersona(ssec06.getQsCluster(), ssec06.getQsNumber(),
			ssec06.getQsHome(), ssec06.getQs20C()) == 1 && verificarEdadPregunta23(ssec06.getQsCluster(), ssec06.getQsNumber(),
			ssec06.getQsHome(), ssec06.getQs20C()) >= 15 && verificarEdadPregunta23(ssec06.getQsCluster(), ssec06.getQsNumber(),
			ssec06.getQsHome(), ssec06.getQs20C()) <= 49){
				guardarSec6DesdePregunta601(contenido, ssec06);
		} else{
			if(verificarSexoPersona(ssec06.getQsCluster(), ssec06.getQsNumber(),
				ssec06.getQsHome(), ssec06.getQs20C()) == 2 && verificarEdadPregunta23(ssec06.getQsCluster(), ssec06.getQsNumber(),
				ssec06.getQsHome(), ssec06.getQs20C()) >= 15 && verificarEdadPregunta23(ssec06.getQsCluster(), ssec06.getQsNumber(),
				ssec06.getQsHome(), ssec06.getQs20C()) <= 49){
					guardarSec6DesdePregunta602(contenido, ssec06);
			}
		}
	}
	
	public void guardarSec6DesdePregunta601(ContentValues contenido, SSEC06 ssec06){
		contenido.put("qs601A", ssec06.getQs601A());
		contenido.put("qs601B", ssec06.getQs601B());
		guardarSec6DesdePregunta602(contenido, ssec06);
	}
	
	public void guardarSec6DesdePregunta602(ContentValues contenido, SSEC06 ssec06){
		if(ssec06.getQs601A() == 1 && ssec06.getQs601B() == 1 && verificarMEF(ssec06.getQsCluster(), 
			ssec06.getQsNumber(), ssec06.getQsHome(), ssec06.getQs20C()) == 1){
				contenido.put("qs603", ssec06.getQs603());
				if(ssec06.getQs603() == 1){
					guardarSec6DesdePregunta604(contenido, ssec06);
				} else{
					guardarSec6DesdePregunta605(contenido, ssec06);
				}
		} else{
			if(ssec06.getQs601A() == 2 && ssec06.getQs601B() == 2 && verificarMEF(ssec06.getQsCluster(), 
				ssec06.getQsNumber(), ssec06.getQsHome(), ssec06.getQs20C()) == 2){
					evaluarGuardarActualizarDatos(contenido, ssec06);
			}
		}
	}
	
	public void guardarSec6DesdePregunta604(ContentValues contenido, SSEC06 ssec06){
		contenido.put("qs604", ssec06.getQs604());
		guardarSec6DesdePregunta605(contenido, ssec06);
	}
	
	public void guardarSec6DesdePregunta605(ContentValues contenido, SSEC06 ssec06){
		if(verificarSexoPersona(ssec06.getQsCluster(), ssec06.getQsNumber(),
			ssec06.getQsHome(), ssec06.getQs20C()) == 1 && verificarEdadPregunta23(ssec06.getQsCluster(), ssec06.getQsNumber(),
			ssec06.getQsHome(), ssec06.getQs20C()) >= 15 && verificarEdadPregunta23(ssec06.getQsCluster(), ssec06.getQsNumber(),
			ssec06.getQsHome(), ssec06.getQs20C()) <= 29){
				contenido.put("qs606", ssec06.getQs606());
				contenido.put("qs607", ssec06.getQs607());
				contenido.put("qs608", ssec06.getQs608());
				contenido.put("qs609", ssec06.getQs609());
				guardarSec6DesdePregunta610(contenido, ssec06);
		} else{
			if(verificarSexoPersona(ssec06.getQsCluster(), ssec06.getQsNumber(),
				ssec06.getQsHome(), ssec06.getQs20C()) == 2 && verificarEdadPregunta23(ssec06.getQsCluster(), ssec06.getQsNumber(),
				ssec06.getQsHome(), ssec06.getQs20C()) >= 15 && verificarEdadPregunta23(ssec06.getQsCluster(), ssec06.getQsNumber(),
				ssec06.getQsHome(), ssec06.getQs20C()) <= 29){
					guardarSec6DesdePregunta610(contenido, ssec06);
			} else{
				if(verificarEdadPregunta23(ssec06.getQsCluster(), ssec06.getQsNumber(),
					ssec06.getQsHome(), ssec06.getQs20C()) >= 30 && verificarEdadPregunta23(ssec06.getQsCluster(), ssec06.getQsNumber(),
					ssec06.getQsHome(), ssec06.getQs20C()) <= 49){
						evaluarGuardarActualizarDatos(contenido, ssec06);
				}
			}
		}
	}
	
	public void guardarSec6DesdePregunta610(ContentValues contenido, SSEC06 ssec06){
		contenido.put("qs610", ssec06.getQs610());
		contenido.put("qs611", ssec06.getQs611());
		evaluarGuardarActualizarDatos(contenido, ssec06);
	}
	
	public void evaluarGuardarActualizarDatos(ContentValues contenido, SSEC06 ssec06){
		if (ExisteSSEC06(ssec06)) {
			db = endesOpenHelper.getWritableDatabase();
			db.update(
					"SSEC06",
					contenido,
					"qsCluster=? and qsNumber=? and qsHome=? and qs20C=?",
					new String[] { ssec06.getQsCluster() + "",
							ssec06.getQsNumber() + "", ssec06.getQsHome() + "",
							ssec06.getQs20C() + "" });
			db.close();
		} else {
			db = endesOpenHelper.getWritableDatabase();
			contenido.put("qsCluster", ssec06.getQsCluster());
			contenido.put("qsNumber", ssec06.getQsNumber());
			contenido.put("qsHome", ssec06.getQsHome());
			contenido.put("qs20C", ssec06.getQs20C());
			db.insert("SSEC06", null, contenido);
			db.close();
		}
	}

	public boolean ExisteSSEC06(SSEC06 ssec06) {
		db = endesOpenHelper.getReadableDatabase();
		cursor = db.rawQuery(
				"Select * from SSEC06 where qsCluster=? and qsNumber=? and qsHome=? "
						+ "and qs20C=?", new String[] {
						ssec06.getQsCluster() + "", ssec06.getQsNumber() + "",
						ssec06.getQsHome() + "", ssec06.getQs20C() + "" });
		if (cursor.moveToFirst()) {
			Cerrar();
			return true;
		} else {
			Cerrar();
			return false;
		}
	}
	
	public int verificarEdadPregunta23(int qsCluster, int qsNumber, int qsHome,
			int numeroOrdenPersonaSeleccionada){
		int edad = 0;
		db = endesOpenHelper.getReadableDatabase();
		cursor = db
				.rawQuery(
						"Select qs23 from SSEC01 where qsCluster=? and qsNumber=? and qsHome=? and qs20C=?",
						new String[] { qsCluster + "", qsNumber + "",
								qsHome + "",
								numeroOrdenPersonaSeleccionada + "" });
		if (cursor.moveToFirst()) {
			edad = cursor.getInt(cursor.getColumnIndex("qs23"));
		}
		return edad;
	}
	
	public int verificarSexoPersona(int qsCluster, int qsNumber, int qsHome,
			int numeroOrdenPersonaSeleccionada){
		int sexo = 0;
		db = endesOpenHelper.getReadableDatabase();
		cursor = db
				.rawQuery(
						"Select qsSexo from SSEC01 where qsCluster=? and qsNumber=? and qsHome=? and qs20C=?",
						new String[] { qsCluster + "", qsNumber + "",
								qsHome + "",
								numeroOrdenPersonaSeleccionada + "" });
		if (cursor.moveToFirst()) {
			sexo = cursor.getInt(cursor.getColumnIndex("qsSexo"));
		}
		return sexo;
	}
	
	public int verificarMEF(int qsCluster, int qsNumber, int qsHome,
			int numeroOrdenPersonaSeleccionada){
		int mef = 0;
		db = endesOpenHelper.getReadableDatabase();
		cursor = db
				.rawQuery(
						"Select qsMEF from SSEC01 where qsCluster=? and qsNumber=? and qsHome=? and qs20C=?",
						new String[] { qsCluster + "", qsNumber + "",
								qsHome + "",
								numeroOrdenPersonaSeleccionada + "" });
		if (cursor.moveToFirst()) {
			mef = cursor.getInt(cursor.getColumnIndex("qsMEF"));
		}
		return mef;
	}

	public void Cerrar() {
		cursor.close();
		db.close();
	}

}
